package pe.com.upc.edu.rtt.controller;


import java.io.IOException;
import java.util.Map;

import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.bind.annotation.ResourceMapping;

import pe.com.upc.edu.rtt.datalayer.util.Util;
import pe.com.upc.edu.rtt.service.ConsultarPartidosService;

import com.google.gson.Gson;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ContentTypes;
import com.liferay.portal.kernel.util.PropsUtil;
import com.liferay.portal.util.PortalUtil;

@Controller
@RequestMapping("VIEW")
public class ConsultarPartidosController {

	private static final Log _log = LogFactoryUtil.getLog(ConsultarPartidosController.class);
	
	@Autowired
	private ConsultarPartidosService consultarPartidosService;
	
	@RequestMapping
	protected String defaultView(Model model, RenderRequest renderRequest,  RenderResponse renderResponse) throws SystemException {			
		if (_log.isDebugEnabled())
			_log.debug("ConsultarPartidosController list2");
		HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest));
		String fechaInicio = httpReq.getParameter("fechaInicio");
		String fechaFin = httpReq.getParameter("fechaFin");
		String ubicacion = httpReq.getParameter("ubicacion");
		String estadio = httpReq.getParameter("estadio");
		String descripcionEvento = httpReq.getParameter("descripcionEvento");
		_log.info("defaultView descripcionEvento:"+descripcionEvento+" fechaInicio:"+fechaInicio+" fechaFin:"+fechaFin+" ubicacion:"+ubicacion +" estadio:"+estadio);
		model.addAttribute("descripcionEvento",descripcionEvento);
		model.addAttribute("fechaInicio", fechaInicio);
		model.addAttribute("fechaFin", fechaFin);
		model.addAttribute("ubicacion", ubicacion);
		model.addAttribute("estadio", estadio);
		model.addAttribute("urlDetalle", PropsUtil.get("pagina.detalle.partido"));
		model.addAttribute("filas", PropsUtil.get("consultar.lista.partido.filas"));
		model.addAttribute("pagina", PropsUtil.get("consultar.lista.partido.pagina"));	
		return "view";
	}
	
	@ResourceMapping("obtenerListadoPartidos")
	public void obtenerListadoPartidos(ResourceRequest resourceRequest ,  ResourceResponse resourceResponse){
		HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(resourceRequest));
		HttpServletResponse httpRespon = PortalUtil.getHttpServletResponse(resourceResponse);
		String descripcionEvento = httpReq.getParameter("descripcionEvento");
		String fechaInicio = httpReq.getParameter("fechaInicio");
		String fechaFin = httpReq.getParameter("fechaFin");
		String ubicacion = httpReq.getParameter("ubicacion");
		String estadio = httpReq.getParameter("estadio");
		int pagina = Integer.parseInt(httpReq.getParameter("pagina")); 
		int filas = Integer.parseInt(httpReq.getParameter("filas"));
		_log.info("obtenerListadoPartidos descripcionEvento:"+descripcionEvento+" fechaInicio:"+fechaInicio+" fechaFin:"+fechaFin+" ubicacion:"+ubicacion +" estadio:"+estadio);
		String contentType = ContentTypes.TEXT_JAVASCRIPT;	
		
		try {
			Map<String, Object> listaPartidos = consultarPartidosService.buscarPartidos(pagina,filas,fechaInicio,fechaFin,ubicacion,estadio,descripcionEvento);
			
			Util.sendResponse(httpRespon, contentType, new Gson().toJson(listaPartidos));
		} catch (IOException e) {
			e.printStackTrace();
			try {
				Util.sendResponse(httpRespon, contentType, null);
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}
	}
		
	
}
